perm filename IDEAS[225,JMC] blob sn#005361 filedate 1971-01-05 generic text, type T, neo UTF8
00100		Heuristics,  as  a  branch  of  artificial  intelligence,  is
00200	concerned  with intellectual mechanisms of problem solving.  We shall
00300	regard it as  distinct  from  epistemology  and  also  distinct  from
00400	linguistics.
00500	
00600		(Epistemology is concerned with the kinds of information that
00700	must be represented in the machine in order to solve certain problems
00800	and  with  how  this  information  may  be  obtained.  Linguistics is
00900	concerned with the relation between information and  the  way  it  is
01000	expressed for the purposes of communication).
01100	
01200		The following kinds of heuristics are known:
01300	
01400		1.    Searching  trees  of alternatives.    There are various
01500	heuristics  designed  to  speed  up  such  searches   such   as   the
01600	αβ-heuristic, killer and anti-killer, impatience, servo-mechanism,
01700	
01800		2.    Decomposition.    A problem is divided into subproblems
01900	which may be solved at least somewhat independently.    Planning  and
02000	localization in game playing are examples of this.
02100	
02200		3.  Guessing.  Confirming a guessed correct solution is often
02300	vastly less work than finding a solution in an unprejudiced way.
     

00000	APHORISMS
00100		1. There are four vices:
00200			a. Mathematics.
00300			b. Hardware.
00400			c. Kludge building.
00500			d. Look ma, no hands.
00600	
00700		These vices may be explained as follows: Mathematics:  When a
00800	mathematician looks at artificial intelligence, he wants to find some
00900	part of it he can prove theorems  about.  Unfortunately,  this  often
01000	leads  to  siezing  a  minor part of the subject and proving theorems
01100	under extremely simplifying  assumptions.   In  our  field,  this  is
01200	especially  bad,  because  often  complexity  is  the  essence of the
01300	matter, and moreover computers permit us to  construct  very  complex
01400	systems  rather  easily.  Examples of related but essentially useless
01500	activities are perceptron and allied theories of pattern recognition,
01600	automata  theory,  and  the  concentration on frustration theorems in
01700	formal languages.  Let me damn the whole theory of  formal  languages
01800	while  I'm  at  it.   It  is somewhat unfair to the practitioners and
01900	partisans of these theories to not give more detailed arguments,  and
02000	I recognise the obligation to elaborate this section later.
02100	
02200	Hardware:  This early vice has mostly been overcome.  It consisted of
02300	desiring to build a  special  piece  of  hardware  to  carry  out  an
02400	algorithm  efficiently before verifying by program that the algorithm
02500	was worthwhile and without taking into account future needs  to  vary
02600	the algorithm drastically.
02700	
02800	Kludge  building:  This  consists  of making AI experimental programs
02900	that contain little bits of different parts of AI.  STUDENT  and  SIR
03000	are subject to this criticism in that they do a little bit of English
03100	language processing followed by a  little  bit  of  tree  search  and
03200	formal  reasoning.   To the extent that we have succeeded in dividing
03300	the AI problem into parts that can be tackled separately, it is  best
03400	to  concentrate on only one problem at a time.  Thus, an experimental
03500	theorem prover should not have an English language front  end.   More
03600	will  be  learned  by  concentrating  the  effort  all on the theorem
03700	proving.   Of  course,  systems  designed  for  practical  use   will
03800	inevitably  be  kludges,  but  then they should ordinarily embody the
03900	present state of whatever arts they use rather than  try  to  advance
04000	them.
04100	
04200	Look  ma,  no  hands:  Students, especially, have a tendency to write
04300	programs to play games or do other intellectual tasks with no goal in
04400	mind  but  to see them work.  It is usually necessary to have an idea
04500	in mind about what is to be learned from  an  experiment  before  the
04600	experiment is worth doing.
04700	
04800		2. When writing a program to solve a problem,  ask  how  much
04900	work  it  would  take  to  verify  a correct answer together with its
05000	supporting information.  Then try to  find  a  way  of  guessing  the
05100	answer  and  the supporting information.  This will usually be faster
05200	than a blind  search.  The  structure  of  the  answer  +  supporting
05300	information should be chosen so as to minimize the effort required to
05400	verify the answer.